<!DOCTYPE html>
<html lang="cn">
  <head>
    <title>vue3 test</title>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="format-detection" content="telephone=no" />
    <meta name="format-detection" content="email=no" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="full-screen" content="yes"/>
    <meta name="browsermode" content="application"/>
    <meta name="x5-orientation" content="portrait"/>
    <meta name="x5-fullscreen" content="true"/>
    <meta name="x5-page-mode" content="app"/>
    <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no,minimal-ui"/>
  </head>
  <body>
    <div id="app" >
      {{msg}}
    </div>
    <!-- 引入js -->
    <script type="text/javascript" src ="./vue.global.js"></script>
    <script type="text/javascript">
    //vue3 兼容vue2 的options 写法
    //此处演示的是 vue3 的组合api(composition-api) 写法
    //官方其他示例请参考
    //https://v3.vuejs.org/guide/composition-api-introduction.html#why-composition-api
    //https://www.lovean.com/view-10-338861-0.html  后续源码分析
    //1.从Vue对象 解构 需要的函数,具体有哪些函数 可以打印查看 console.log(Vue);
    const {onMounted,ref,watch ,toRefs,computed}=Vue; 
    //2.创建app
    Vue.createApp({
       //setup()                         //无参数  第一种形式
       //setup(props,context)            //带context 参数  第二种形式
       setup(props,{attrs,emit,slots}) { //解构context 参数  第三种形式
            const msg = ref("hello  Vue3");
            setTimeout(() => {
              msg.value = '2秒钟以后修改msg的值' 
            }, 2000)
            
            //setup 生命周期函数需要返回一个对象
            return {
              msg
            };
       }
    }).mount('#app');
    /*
    
	
	
	let content=` 
	console.log(this.msg) ; 
	console.log(exports) ;
    console.log(require) ;
    console.log(httpVueLoader) ; 	
    console.log(module) ; 	 	
	console.log('content') 
	`;
	
	console.log(Function('exports', 'require', 'httpVueLoader', 'module',content));
	
	
	Function('exports', 'require', 'httpVueLoader', 'module',content).call(
	 {msg:'thisMsg'}
	,'exportsValue'
	,'requireValue'
	,'httpVueLoaderValue'
	,'moduleValue'
	);
	*/
	
	
	
	
    </script>
    
	
  </body>
</html>
